package com.service.impl;


import com.dao.EmpDao;
import com.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;

import java.util.Map;
import java.util.Set;

@Service

public class EmpServiceImpl implements EmpService {

    @Autowired //会注入spring容器中所有类型是EmpDao及其实现类的所有bean过来
    private Set<EmpDao> daos;

    @Autowired //注入的是spring容器中所有的EmpDao的bean，键是bean的id，值就是bean
    private Map<String, EmpDao> mapDaos;

    @Autowired
    private ApplicationContext context;

    //Environment简单理解为Profile +属性  ：所有读取的属性文件，系统属性
    //信息全部可以靠这个变量来获取到。
    @Autowired
    private Environment env;

    public EmpServiceImpl() {
        System.out.println("service 构造函数---");

    }

    //@Autowired//依据类型查找
    //@Resource//先依据名字查找，找不到就再依据类型查找
    //还有一个注解@Inject，这个注解是jsr330的注解，要添加额外的依赖才能使用，平时基本上不用
    // @Qualifier("empDaoImpl2")
    private EmpDao dao;

    public EmpDao getDao() {
        return dao;
    }

    @Autowired
    @Qualifier("empDaoImpl2")
    public void setDao(EmpDao dao) {
        this.dao = dao;
    }

    @Override
    public void insert() {
        System.out.println("com.service emp");
        dao.insert();
    }

    public void test() {
        System.out.println(context);
        System.out.println(env);
        System.out.println(env.getProperty("username"));
        //集合的注入
        System.out.println("--------");
        System.out.println(daos);
        System.out.println(mapDaos);

    }

}
